package cn.oveay.classdesign.dao.base;

import cn.oveay.classdesign.bean.basebean.User;
import cn.oveay.classdesign.util.jdbc.TxQueryRunner;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public interface BaseDao {
    //返回值int表示新增了几行，0代表不成功
    //Object data:将会代换成具体的实体类，多态的应用
    public <T> int insert(T data) throws Exception;
    //表中使用id 自动增长的数据作为主键
    //新增时，数据中的id==null，修改时，id一定要有值
    public <T> int update(T data) throws Exception;
    public int delete(int id) throws Exception;

    //声明查询方法
    //1 查所有数据
    public List findAll() throws Exception;
    //2 根据id查一条
    public <T> T findOne(int id) throws Exception;
    //3 根据条件查满足条件的所有数据
    //  直接传入条件 " where ....",违背设计原则
    //  传入构成条件的数据：数据应该基本来自于实体类的属性值
    //     一般会有一些变化的值
    public List findByCondition(BaseQueryModel queryModel) throws Exception;

    public Long findMaxId() throws Exception;
}
